8.3 简单的命令行操作

在大部分语言中,都会有命令行交互的场景。

比如我实现了一个在Linux终端运行的小程序,那么我执行程序后需要我输入一些内容,之后进行一些计算及业务逻辑。

本节我们使用一个简单示例:输入秒级时间戳,转换输出当前的时间。

本节代码存放目录为 lesson25

捕获命令行的输入,我们主要使用bufioos.Stdin来实现。代码如下所示:

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Println("请输入时间戳 (输入 exit 退出)")

    for {
        fmt.Printf("时间戳: ")

        input, err := reader.ReadString('\n')
        if err != nil {
            fmt.Println("读取输入错误: ", err)
            continue
        }

        input = strings.TrimSpace(input)

        if input == "exit" {
            fmt.Println("退出程序")
            break
        }

        ts, err := strconv.ParseInt(input, 10, 64)
        if err != nil {
            fmt.Println("输入的时间戳格式有误")
            continue
        }

        date := time.Unix(ts, 64).Format("2006-01-02 15:04:05")
        fmt.Println("转换结果: ", date)
    }
}

在上面的代码中,我们使用reader.ReadString读取命令行的输入,之后根据读取到的值进行转换操作。

执行效果如下:

请输入时间戳 (输入 exit 退出)
时间戳: 1724136990
转换结果:  2024-08-20 14:56:30
时间戳: 1724137010
转换结果:  2024-08-20 14:56:50
时间戳: exit
退出程序

当我们在写一些脚本及小工具的时候,这种方法是比较有用的,同时我们可能还有其他的需求。

比如:执行程序的时候在命令后方直接加上参数,也就是将参数带到脚本里面。

我们可以参照 odate,这是一个简易的进行时间处理的小工具,代码比较简单,适合作为案例学习。

results matching ""

    No results matching ""